package me.jiatao.plugin

object Versions {
    //AndroidX
    const val activity = "1.3.0"
    const val appcompat = "1.3.1"
    const val coreKtx = "1.6.0"
    const val constraintLayout = "2.1.0"
    const val material = "1.4.0"
    const val cardView = "1.0.0"
    const val recyclerview = "1.0.0"
    const val fragment = "1.3.6"
    const val swiperefreshlayout = "1.1.0"

    //jetpack
    const val lifecycle = "2.3.1"
    const val paging = "3.0.1"
    const val work = "2.5.0"
    const val room = "2.3.0"
    const val appStartup = "1.1.0"

    //network
    const val retrofit = "2.9.0"
    const val okhttpLogging = "4.9.0"

    //kotlin
    const val kotlin = "1.5.21"
    const val kotlinCoroutinesCore = "1.5.0"
    const val kotlinCoroutinesAndroid = "1.5.0"

    //coin
    const val coinRuntime = "1.3.2"

    //依赖注入库
    const val hilt = "2.38.1"

    //kotlin辅助库，暂不使用
    const val koin = "2.1.5"
    const val anko = "0.10.8"

    //test
    const val junit = "4.12"
    const val junitExt = "1.1.3"
    const val espressoCore = "3.4.0"

    //log
    const val timber = "4.7.1"

    //dataBinding helper
    const val dhlBinding = "1.1.3"
    const val banner = "2.2.2"
}


object Kotlin {
    const val plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"

    //const val stdlibJdk7 = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}"
    const val stdlibJdk8 = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlin}"
    const val test = "org.jetbrains.kotlin:kotlin-test-junit:${Versions.kotlin}"

    const val coroutinesCore =
        "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.kotlinCoroutinesCore}"
    const val coroutinesAndroid =
        "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.kotlinCoroutinesAndroid}"
}

object AndroidX {
    const val activity = "androidx.activity:activity-ktx:${Versions.activity}"
    const val appcompat = "androidx.appcompat:appcompat:${Versions.appcompat}"
    const val coreKtx = "androidx.core:core-ktx:${Versions.coreKtx}"
    const val constraintLayout =
        "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}"
    const val material = "com.google.android.material:material:${Versions.material}"
    const val cardView = "androidx.cardview:cardview:${Versions.cardView}"
    const val recyclerview = "androidx.recyclerview:recyclerview:${Versions.recyclerview}"
    const val swiperefreshlayout =
        "androidx.swiperefreshlayout:swiperefreshlayout:${Versions.swiperefreshlayout}"

    //jetpack
    const val lifecycleRuntime = "androidx.lifecycle:lifecycle-runtime-ktx:${Versions.lifecycle}"
    const val lifecycle = "androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
    const val viewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"
    const val viewModelSavedState =
        "androidx.lifecycle:lifecycle-viewmodel-savedstate:${Versions.lifecycle}"
    const val appStartup = "androidx.startup:startup-runtime:${Versions.appStartup}"

    //Paging3
    const val pagingRuntime = "androidx.paging:paging-runtime:${Versions.paging}"

    //Android WorkManager
    const val workRuntime = "androidx.work:work-runtime:${Versions.work}"
    const val workTesting = "androidx.work:work-testing:${Versions.work}"
}


object Room {
    //使用kapt引入
    const val compiler = "androidx.room:room-compiler:${Versions.room}"
    const val runtime = "androidx.room:room-runtime:${Versions.room}"
    const val ktx = "androidx.room:room-ktx:${Versions.room}"

    const val rxjava2 = "androidx.room:room-rxjava2:${Versions.room}"
    const val testing = "androidx.room:room-testing:${Versions.room}"
}

object Fragment {
    const val runtime = "androidx.fragment:fragment:${Versions.fragment}"
    const val runtimeKtx = "androidx.fragment:fragment-ktx:${Versions.fragment}"
    const val testing = "androidx.fragment:fragment-testing:${Versions.fragment}"
}

object Retrofit {
    const val runtime = "com.squareup.retrofit2:retrofit:${Versions.retrofit}"
    const val gson = "com.squareup.retrofit2:converter-gson:${Versions.retrofit}"
    const val mock = "com.squareup.retrofit2:retrofit-mock:${Versions.retrofit}"
    const val logging = "com.squareup.okhttp3:logging-interceptor:${Versions.okhttpLogging}"
}

object Hilt {
    const val plugin = "com.google.dagger:hilt-android-gradle-plugin:${Versions.hilt}"

    //使用kapt引入
    const val compiler = "com.google.dagger:hilt-compiler:${Versions.hilt}"
    const val hilt = "com.google.dagger:hilt-android:${Versions.hilt}"
}

object Coil {
    const val runtime = "io.coil-kt:coil:${Versions.coinRuntime}"
}

object Koin {
    const val core = "org.koin:koin-core:${Versions.koin}"
    const val androidCore = "org.koin:koin-android:${Versions.koin}"
    const val viewModel = "org.koin:koin-androidx-viewmodel:${Versions.koin}"
    const val androidScope = "org.koin:koin-android-scope:$${Versions.koin}"
}

object Anko {
    const val common = "org.jetbrains.anko:anko-common:${Versions.anko}"
    const val sqlite = "org.jetbrains.anko:anko-sqlite:${Versions.anko}"
    const val coroutines = "org.jetbrains.anko:anko-coroutines:${Versions.anko}"
    const val design = "org.jetbrains.anko:anko-design:${Versions.anko}" // For SnackBars
}


object Depend {
    const val junit = "junit:junit:${Versions.junit}"
    const val androidTestJunit = "androidx.test.ext:junit:${Versions.junitExt}"
    const val espressoCore = "androidx.test.espresso:espresso-core:${Versions.espressoCore}"

    //日志输出
    const val timber = "com.jakewharton.timber:timber:${Versions.timber}"

    /**
     * 简化dataBinding的库
     * https://github.com/hi-dhl/Binding
     */
    const val dhlBinding = "com.hi-dhl:binding:${Versions.dhlBinding}"

    /**
     * 轮播图
     * https://github.com/youth5201314/banner
     */
    const val banner = "io.github.youth5201314:banner:${Versions.banner}"
}

